package com.yuncheng.oaApi.utils;

import cn.hutool.core.date.DateUtil;
import com.yuncheng.oaApi.config.OaMinioUtils;
import com.yuncheng.oaApi.constant.OaBusinessConstant;
import com.yuncheng.oaApi.constant.OaWjjlConstant;
import com.yuncheng.spcyApi.constant.common.SpcyConstant;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import utils.DateConversionUtils;
import utils.Util;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.util.Date;

/**
 * 本地上传文件工具类
 */
@Component
public class OaLocalFileUploadUtils {
    private static final Logger log = LoggerFactory.getLogger(OaLocalFileUploadUtils.class);

    @Resource
    private OaBusinessConstant bussinessConstant;

    @Resource
    @Lazy
    private OaMinioUtils oaMinioUtils;


//
//    public boolean isEnableMinioQmFile(){
//        return bussinessConstant.isEnableUserQmMinio;
//    }

    /**
     * 利用字节流复制
     * @param src
     * @param dest
     * @throws IOException
     */
    public void copyFile(String src,String dest) throws IOException{
        InputStream is = new BufferedInputStream(new FileInputStream(src));
        OutputStream os = new BufferedOutputStream(new FileOutputStream(dest));
        //文件拷贝u，-- 循环+读取+写出
        byte[] b = new byte[10];//缓冲大小
        int len = 0;//接收长度
        //读取文件
        while (-1!=(len = is.read(b))) {
            //读入多少，写出多少，直到读完为止。
            os.write(b,0,len);
        }
        //强制刷出数据
        os.flush();
        //关闭流，先开后关
        os.close();
        is.close();
    }

    // (文件记录) - 虚拟文件路径删除
    public void deleteLocalFileUrl(String xnUrl){
        String fileUrl = bussinessConstant.YUNCEHNG_PATH_UPLOAD+xnUrl;
        File file = new File(fileUrl);
        if (file.exists()) {
            file.delete();
        }
    }



//    // （文件模板）- 虚拟文件路径删除
//    public void deleteLocalWjmbFileUrl(String xnUrl){
//        String fileUrl = bussinessConstant.UPLOAD_WJMB_PATH+xnUrl;
//        File file = new File(fileUrl);
//        if (file.exists()) {
//            file.delete();
//        }
//    }
//
//    // （用户签名）- 全路径文件路径删除
//    public void deleteLocalQmFileUrl(String xnUrl){
//        xnUrl = bussinessConstant.USER_QM_PATH + xnUrl;
//        File file = new File(xnUrl);
//        if (file.exists()) {
//            file.delete();
//        }
//    }

    // （自定义）- 全路径文件路径删除
    public void deleteLocalFileUrlByZdy(String xnUrl){
        xnUrl = bussinessConstant.UPLOAD_OA_ZW + xnUrl;
        File file = new File(xnUrl);
        if (file.exists()) {
            file.delete();
        }
    }

    // （文件记录）-真实文件路径下载
    public void getLocalFileURL(String fileNameUrl,String fileName,HttpServletResponse response){
        fileNameUrl = bussinessConstant.YUNCEHNG_PATH_UPLOAD + fileNameUrl;
        try {
            // path是指想要下载的文件的路径
            File file = new File(fileNameUrl);
            // 获取文件名
            String filename = file.getName();
            // 获取文件后缀名
            String ext = filename.substring(filename.lastIndexOf(".") + 1).toLowerCase();
            // 将文件写入输入流
            FileInputStream fileInputStream = new FileInputStream(file);
            InputStream fis = new BufferedInputStream(fileInputStream);
            byte[] buffer = new byte[fis.available()];
            fis.read(buffer);
            fis.close();
            // 清空response
            response.reset();
            // 设置response的Header
           /* if (request.getHeader("User-Agent").toUpperCase().contains("MSIE") ||
                    request.getHeader("User-Agent").toUpperCase().contains("TRIDENT")
                    || request.getHeader("User-Agent").toUpperCase().contains("EDGE")) {
                name = java.net.URLEncoder.encode(name, "UTF-8");
            } else {
                //非IE浏览器的处理：
                name = new String(name.getBytes("UTF-8"), "ISO-8859-1");
            }*/
            response.setCharacterEncoding("UTF-8");
            response.addHeader("Access-Control-Allow-Origin", "*");
            response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
            //Content-Disposition的作用：告知浏览器以何种方式显示响应返回的文件，用浏览器打开还是以附件的形式下载到本地保存
            //attachment表示以附件方式下载   inline表示在线打开   "Content-Disposition: inline; filename=文件名.mp3"
            // filename表示文件的默认名称，因为网络传输只支持URL编码的相关支付，因此需要将文件名URL编码后进行传输,前端收到后需要反编码才能获取到真正的名称
//            response.addHeader("Content-Disposition", "attachment;filename=".concat(String.valueOf(URLEncoder.encode(fileName, "UTF-8"))) + '.' + ext);
            response.addHeader("Content-Disposition", "attachment;filename=".concat(String.valueOf(URLEncoder.encode(fileName, "UTF-8"))));

            // 告知浏览器文件的大小
            response.addHeader("Content-Length", "" + file.length());
            OutputStream outputStream = new BufferedOutputStream(response.getOutputStream());
            response.setContentType("application/octet-stream;charset=UTF-8");
            outputStream.write(buffer);
            outputStream.flush();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

    // （文件模板）-真实文件路径下载
//    public void getLocalWjmbFileURL(String fileNameUrl,String fileName,HttpServletResponse response){
//        fileNameUrl = bussinessConstant.UPLOAD_WJMB_PATH + fileNameUrl;
//        try {
//            // path是指想要下载的文件的路径
//            File file = new File(fileNameUrl);
//            // 获取文件名
//            String filename = file.getName();
//            // 获取文件后缀名
//            String ext = filename.substring(filename.lastIndexOf(".") + 1).toLowerCase();
//            // 将文件写入输入流
//            FileInputStream fileInputStream = new FileInputStream(file);
//            InputStream fis = new BufferedInputStream(fileInputStream);
//            byte[] buffer = new byte[fis.available()];
//            fis.read(buffer);
//            fis.close();
//            // 清空response
//            response.reset();
//            // 设置response的Header
//           /* if (request.getHeader("User-Agent").toUpperCase().contains("MSIE") ||
//                    request.getHeader("User-Agent").toUpperCase().contains("TRIDENT")
//                    || request.getHeader("User-Agent").toUpperCase().contains("EDGE")) {
//                name = java.net.URLEncoder.encode(name, "UTF-8");
//            } else {
//                //非IE浏览器的处理：
//                name = new String(name.getBytes("UTF-8"), "ISO-8859-1");
//            }*/
//            response.setCharacterEncoding("UTF-8");
//            response.addHeader("Access-Control-Allow-Origin", "*");
//            response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
//            //Content-Disposition的作用：告知浏览器以何种方式显示响应返回的文件，用浏览器打开还是以附件的形式下载到本地保存
//            //attachment表示以附件方式下载   inline表示在线打开   "Content-Disposition: inline; filename=文件名.mp3"
//            // filename表示文件的默认名称，因为网络传输只支持URL编码的相关支付，因此需要将文件名URL编码后进行传输,前端收到后需要反编码才能获取到真正的名称
////            response.addHeader("Content-Disposition", "attachment;filename=".concat(String.valueOf(URLEncoder.encode(fileName, "UTF-8"))) + '.' + ext);
//            response.addHeader("Content-Disposition", "attachment;filename=".concat(String.valueOf(URLEncoder.encode(fileName, "UTF-8"))));
//
//            // 告知浏览器文件的大小
//            response.addHeader("Content-Length", "" + file.length());
//            OutputStream outputStream = new BufferedOutputStream(response.getOutputStream());
//            response.setContentType("application/octet-stream;charset=UTF-8");
//            outputStream.write(buffer);
//            outputStream.flush();
//        } catch (IOException ex) {
//            ex.printStackTrace();
//        }
//    }

    // （用户签名）-真实文件路径下载
//    public void getLocalQmFileURL(String fileNameUrl,String fileName,HttpServletResponse response){
//        fileNameUrl = bussinessConstant.USER_QM_PATH + fileNameUrl;
//        try {
//            // path是指想要下载的文件的路径
//            File file = new File(fileNameUrl);
//            // 获取文件名
//            String filename = file.getName();
//            // 获取文件后缀名
//            String ext = filename.substring(filename.lastIndexOf(".") + 1).toLowerCase();
//            // 将文件写入输入流
//            FileInputStream fileInputStream = new FileInputStream(file);
//            InputStream fis = new BufferedInputStream(fileInputStream);
//            byte[] buffer = new byte[fis.available()];
//            fis.read(buffer);
//            fis.close();
//            // 清空response
//            response.reset();
//
//            response.setCharacterEncoding("UTF-8");
//            response.addHeader("Access-Control-Allow-Origin", "*");
//            response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
//            //Content-Disposition的作用：告知浏览器以何种方式显示响应返回的文件，用浏览器打开还是以附件的形式下载到本地保存
//            response.addHeader("Content-Disposition", "attachment;filename=".concat(String.valueOf(URLEncoder.encode(fileName, "UTF-8"))));
//
//            // 告知浏览器文件的大小
//            response.addHeader("Content-Length", "" + file.length());
//            OutputStream outputStream = new BufferedOutputStream(response.getOutputStream());
//            response.setContentType("image/jpeg");
//            outputStream.write(buffer);
//            outputStream.flush();
//        } catch (IOException ex) {
//            ex.printStackTrace();
//        }
//    }

    // （文件记录）虚拟文件路径下载-二进制下载
    public void ejzLocalFileURl(String fileNameUrl,HttpServletResponse response){
        String path = bussinessConstant.YUNCEHNG_PATH_UPLOAD + fileNameUrl;
        File file = new File(path);

        if (!file.exists()) {
//            System.out.println("文件已删除或不存在");
            return ;
        }
        InputStream in = null;
        OutputStream os = null;
        try {
            String wjhz = Util.getWjHz(path);
            String contentType = Util.getContenTypeByWjhz(wjhz);
            response.setContentType(contentType); // 设置返回内容格式
            response.setCharacterEncoding("UTF-8");
            in = new FileInputStream(file); //用该文件创建一个输入流
            os = response.getOutputStream(); //创建输出流
            byte[] b = new byte[1024];
            while (in.read(b) != -1) {
                os.write(b);
            }
            in.close();
            os.flush();
            os.close();
        } catch (Exception e) {
            try {
                if (null != in) in.close();
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            try {
                if (null != os) os.close();
            } catch (IOException e2) {
                e2.printStackTrace();
            }
        }
    }

    // (文件模板)虚拟文件路径下载-二进制下载
//    public void ejzLocalWjmbFileURl(String fileNameUrl,HttpServletResponse response){
//        log.info("文件模板路径： {}",fileNameUrl);
//        String path = bussinessConstant.UPLOAD_WJMB_PATH + fileNameUrl;
//        File file = new File(path);
//        log.info("文件模板路径： {}",file.getAbsolutePath());
//        if (!file.exists()) {
//            log.error("文件已删除或不存在");
//            return ;
//        }
//        InputStream in = null;
//        OutputStream os = null;
//        try {
//            String wjhz = Util.getWjHz(path);
//            String contentType = Util.getContenTypeByWjhz(wjhz);
//            response.setContentType(contentType); // 设置返回内容格式
//            response.setCharacterEncoding("UTF-8");
//            in = new FileInputStream(file); //用该文件创建一个输入流
//            os = response.getOutputStream(); //创建输出流
//            byte[] b = new byte[1024];
//            while (in.read(b) != -1) {
//                os.write(b);
//            }
//            in.close();
//            os.flush();
//            os.close();
//        } catch (Exception e) {
//            try {
//                if (null != in) in.close();
//            } catch (IOException e1) {
//                e1.printStackTrace();
//            }
//            try {
//                if (null != os) os.close();
//            } catch (IOException e2) {
//                e2.printStackTrace();
//            }
//        }
//    }

    // (用户签名)虚拟文件路径下载-二进制下载
//    public void ejzLocalQmFileURl(String fileNameUrl,HttpServletResponse response){
//        String path = bussinessConstant.USER_QM_PATH + fileNameUrl;
//        File file = new File(path);
//
//        if (!file.exists()) {
//            System.out.println("文件已删除或不存在");
//            return ;
//        }
//        InputStream in = null;
//        OutputStream os = null;
//        try {
//            String wjhz = Util.getWjHz(path);
//            String contentType = Util.getContenTypeByWjhz(wjhz);
//            response.setContentType(contentType); // 设置返回内容格式
//            response.setCharacterEncoding("UTF-8");
//            in = new FileInputStream(file); //用该文件创建一个输入流
//            os = response.getOutputStream(); //创建输出流
//            byte[] b = new byte[1024];
//            while (in.read(b) != -1) {
//                os.write(b);
//            }
//            in.close();
//            os.flush();
//            os.close();
//        } catch (Exception e) {
//            try {
//                if (null != in) in.close();
//            } catch (IOException e1) {
//                e1.printStackTrace();
//            }
//            try {
//                if (null != os) os.close();
//            } catch (IOException e2) {
//                e2.printStackTrace();
//            }
//        }
//    }

    // （自定义）虚拟文件路径下载-二进制下载
    public void ejzLocalFileURlByZdy(String fileNameUrl,HttpServletResponse response){
        String path = bussinessConstant.UPLOAD_OA_ZW + fileNameUrl;
        File file = new File(path);

        if (!file.exists()) {
            log.error("文件已删除或不存在");
            return ;
        }
        InputStream in = null;
        OutputStream os = null;
        try {
            String wjhz = Util.getWjHz(path);
            String contentType = Util.getContenTypeByWjhz(wjhz);
            response.setContentType(contentType); // 设置返回内容格式
            response.setCharacterEncoding("UTF-8");
            in = new FileInputStream(file); //用该文件创建一个输入流
            os = response.getOutputStream(); //创建输出流
            byte[] b = new byte[1024];
            while (in.read(b) != -1) {
                os.write(b);
            }
            in.close();
            os.flush();
            os.close();
        } catch (Exception e) {
            try {
                if (null != in) in.close();
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            try {
                if (null != os) os.close();
            } catch (IOException e2) {
                e2.printStackTrace();
            }
        }
    }

    // 二进制文件保存
    public void uploadEjzFile(InputStream inputStream,String uploadUrl){
        File targetFile = new File(uploadUrl);
        try {
            FileUtils.copyInputStreamToFile(inputStream, targetFile);
        } catch (IOException e) {
            log.error("二进制文件上传失败: {}",e.getMessage());
        }
    }

    /**
     * 上传本地文件，自定义文件名(文件记录)
     * @param file 上传的文件
     * @param fileName 自定义文件名
     * @return
     */
    public File uploadLocalFile(MultipartFile file, String fileName){
        String originalFilename = file.getOriginalFilename();
        String newFileName = fileName + originalFilename.substring(originalFilename.lastIndexOf("."));
        File uploadFile = uploadExcelFile(file, newFileName);
        return uploadFile;
    }

    /**
     * 上传自定义目录, 文件路径的文件 附件
     *
     * @param fileName 包含文件后缀
     * @param baseUrl  保存的文件目录
     */
    public File uploadZdyFile(MultipartFile file, String fileName, String baseUrl){
        //获取绝对路径
        String newDir = "";
        if (StringUtils.isNotBlank(baseUrl)) {
            newDir = "/" + baseUrl;
        }else {
            String nowDay = DateUtil.today(); // 获取当前日期 yyyy-MM-dd
            newDir = "/" + nowDay;
        }
        File dir = new File(bussinessConstant.UPLOAD_FILE_OAFJ + newDir);
        if (!dir.exists()) {
            dir.mkdirs();
        }
        String filePath = new File(bussinessConstant.UPLOAD_FILE_OAFJ + newDir).getAbsolutePath();
        //获取文件上传名称
        File fileUpload = new File(filePath, fileName);
        if (fileUpload.exists()) {
            fileUpload.delete();
        }

        try {
            //上传文件
            file.transferTo(fileUpload);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return fileUpload;
    }
    /**
     * 是否启用本地上传(自定义文件)
     * @return
     */
    public boolean isEnableMinioZdyFile(){
        return false;
    }


    /**
     * 上传文件
     * @param file 文件流实体
     * @param fileName 文件名称+后缀
     * @param baseUrl 存储目录 (xxx/xxx)
     * @param isMinio
     * @return
     */
    public File uploadZdyFile(MultipartFile file, String fileName, String baseUrl,boolean isMinio){
        //获取绝对路径
        String newDir = "";
        if (StringUtils.isNotBlank(baseUrl)) {
            newDir = "/" + baseUrl;
        }else {
            String nowDay = DateConversionUtils.DateToMonthTwo(new Date()); // 获取当前日期 yyyy-MM-dd
            newDir = "/" + nowDay;
        }

        if (this.isEnableMinioZdyFile()){
            oaMinioUtils.uploadFile(file,newDir+"/"+fileName);

            return null;
        }else {
            if (isMinio){
                oaMinioUtils.uploadFile(file,newDir+"/"+fileName);
                return null;
            }else {

                File dir = new File(bussinessConstant.UPLOAD_FILE_ROOT + newDir);
                if (!dir.exists()) {
                    dir.mkdirs();
                }

                String filePath = new File(bussinessConstant.UPLOAD_FILE_ROOT + newDir).getAbsolutePath();
                //获取文件上传名称
                File fileUpload = new File(filePath, fileName);
                if (fileUpload.exists()) {
                    fileUpload.delete();
                }

                try {
                    //上传文件
                    file.transferTo(fileUpload);
                } catch (IOException e) {
                    e.printStackTrace();
                }
                return fileUpload;
            }
        }
    }


    /**
     * 上传自定义目录, 文件路径的文件 正文
     *
     * @param fileName 包含文件后缀
     * @param baseUrl  保存的文件目录
     */
    public File uploadZdyzwFile(MultipartFile file, String fileName, String baseUrl) {
        //获取绝对路径
        String newDir = "";
        if (StringUtils.isNotBlank(baseUrl)) {
            newDir = "/" + baseUrl;
        } else {
            String nowDay = DateUtil.today(); // 获取当前日期 yyyy-MM-dd
            newDir = "/" + nowDay;
        }
        File dir = new File(bussinessConstant.UPLOAD_OA_ZW + newDir);
        if (!dir.exists()) {
            dir.mkdirs();
        }
        String filePath = new File(bussinessConstant.UPLOAD_OA_ZW + newDir).getAbsolutePath();
        //获取文件上传名称
        File fileUpload = new File(filePath, fileName);
        if (fileUpload.exists()) {
            fileUpload.delete();
        }

        try {
            //上传文件
            file.transferTo(fileUpload);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return fileUpload;
    }

    /**
     * 上传本地文件，自定义文件名(文件记录)
     * @param file 上传的文件
     * @param fileName 自定义文件名
     * @return
     */
    public File uploadOnlineFile(MultipartFile file, String fileName,String fileType){
        String newFileName = fileName + fileType;
        File uploadFile = uploadExcelFile(file, newFileName);
        return uploadFile;
    }

    /**
     * 上传文件 功能(文件记录库上传)
     * @param file 上传的文件
     * @param fileName 上传文件的文件名
     * @return
     */
    public File uploadExcelFile(MultipartFile file,String fileName){
        //获取绝对路径
        String nowDay = DateUtil.today(); // 获取当前日期 yyyy-MM-dd
        String newDir = "/"+nowDay;
        File dir = new File(bussinessConstant.YUNCEHNG_PATH_UPLOAD+newDir);
        if (!dir.exists()){
            dir.mkdirs();
        }
        String filePath = new File(bussinessConstant.YUNCEHNG_PATH_UPLOAD+newDir).getAbsolutePath();
        //获取文件上传名称
        File fileUpload = new File(filePath, fileName);
        if (fileUpload.exists()) {
            fileUpload.delete();
        }

        try {
            //上传文件
            file.transferTo(fileUpload);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return fileUpload;
    }

    /**
     * 上传本地文件，自定义文件名(文件模板)
     * @param file 上传的文件
     * @param fileName 自定义文件名
     * @return
     */
//    public File uploadLocalWjmbFile(MultipartFile file, String fileName,String baseUrl){
//        String originalFilename = file.getOriginalFilename();
//        String newFileName = fileName + originalFilename.substring(originalFilename.lastIndexOf("."));
//        File uploadFile = uploadWjmbFile(file, newFileName, baseUrl);
//        return uploadFile;
//    }

    /**
     * 上传文件 功能 (文件模板)
     * @param file 上传的文件
     * @param fileName 上传文件的文件名
     * @return
     */
//    public File uploadWjmbFile(MultipartFile file,String fileName,String baseUrl){
//        //获取绝对路径
//        String nowDay = DateUtil.today(); // 获取当前日期 yyyy-MM-dd
//        String newDir = "/"+nowDay;
//        if (StringUtils.isNotBlank(baseUrl)){
//            newDir = "/" + baseUrl;
//        }
//        File dir = new File(bussinessConstant.UPLOAD_WJMB_PATH+newDir);
//        if (!dir.exists()){
//            dir.mkdirs();
//        }
//        String filePath = new File(bussinessConstant.UPLOAD_WJMB_PATH+newDir).getAbsolutePath();
//        //获取文件上传名称
//        File fileUpload = new File(filePath, fileName);
//        if (fileUpload.exists()) {
//            fileUpload.delete();
//        }
//
//        try {
//            //上传文件
//            file.transferTo(fileUpload);
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        return fileUpload;
//    }

    /**
     * 上传本地文件，自定义文件名(签名)
     * @param file 上传的文件
     * @param fileName 自定义文件名
     * @return
     */
//    public File uploadLocalUserQmFile(MultipartFile file, String fileName){
//        String originalFilename = file.getOriginalFilename();
//        String newFileName = fileName + originalFilename.substring(originalFilename.lastIndexOf("."));
//        File uploadFile = uploadUserQmFile(file, newFileName);
//        return uploadFile;
//    }

    /**
     * 上传文件 功能 (签名)
     * @param file 上传的文件
     * @param fileName 上传文件的文件名
     * @return
     */
//    public File uploadUserQmFile(MultipartFile file,String fileName){
//        //获取绝对路径
//        File dir = new File(bussinessConstant.USER_QM_PATH);
//        if (!dir.exists()){
//            dir.mkdirs();
//        }
//        String filePath = new File(bussinessConstant.USER_QM_PATH).getAbsolutePath();
//        //获取文件上传名称
//        File fileUpload = new File(filePath, fileName);
//        if (fileUpload.exists()) {
//            fileUpload.delete();
//        }
//
//        try {
//            //上传文件
//            file.transferTo(fileUpload);
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        return fileUpload;
//    }

    /**
     * 上传文件 功能(上传临时文件)
     * @param file 上传的文件
     * @param fileName 上传文件的文件名
     * @return
     */
//    public File uploadDempFile(MultipartFile file,String fileName){
//        //获取绝对路径
//        String nowDay = DateUtil.today(); // 获取当前日期 yyyy-MM-dd
//        String newDir = "/"+nowDay;
//
//        File dir = new File(bussinessConstant.TEMPORARY_UPLOAD_MKDIR_ROOT+"/"+ OaWjjlConstant.TEMP_WJJL_CHILD_URL + newDir);
//        if (!dir.exists()) {
//            dir.mkdirs();
//        }
//        String filePath = new File(bussinessConstant.TEMPORARY_UPLOAD_MKDIR_ROOT+"/"+ OaWjjlConstant.TEMP_WJJL_CHILD_URL + newDir).getAbsolutePath();
//        //获取文件上传名称
//        File fileUpload = new File(filePath, fileName);
//        if (fileUpload.exists()) {
//            fileUpload.delete();
//        }
//
//        try {
//            //上传文件
//            file.transferTo(fileUpload);
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        return fileUpload;
//
//    }

    /**
     * 上传文件 功能(上传临时文件)
     * @param file 上传的文件
     * @param fileName 上传文件的文件名
     * @return
     */
    public File uploadDempFile(MultipartFile file,String fileName){
        //获取绝对路径
        String nowDay = DateUtil.today(); // 获取当前日期 yyyy-MM-dd
        String newDir = "/"+nowDay;

        File dir = new File(this.getTempFileRootUrl() + newDir);
        if (!dir.exists()) {
            dir.mkdirs();
        }
        String filePath = new File(this.getTempFileRootUrl() + newDir).getAbsolutePath();
        //获取文件上传名称
        File fileUpload = new File(filePath, fileName);
        if (fileUpload.exists()) {
            fileUpload.delete();
        }

        try {
            //上传文件
            file.transferTo(fileUpload);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return fileUpload;

    }

    /** 获取临时文件存放根路径 */
    public String getTempFileRootUrl(){
        return bussinessConstant.TEMPORARY_UPLOAD_MKDIR_ROOT + "/" + OaWjjlConstant.TEMP_WJJL_CHILD_URL;

    }
}
